home *** CD-ROM | disk | FTP | other *** search
/ Loadstar 204 / 204.d81 / zip 64 (.txt) < prev    next >
Commodore BASIC  |  2022-08-26  |  13KB  |  474 lines

  1. 999 end
  2. 1000 bs=40960:fl$="file name.zml":goto1630
  3. 1010 b=peek(ad):ad=ad+1:ifb=32then1010
  4. 1020 return
  5. 1030 aa=ad
  6. 1040 b=peek(aa):aa=aa+1:ifb=32then1040
  7. 1050 return
  8. 1060 gosub1010:ifb<>0thenprintb:goto1730
  9. 1070 return
  10. 1080 n=0
  11. 1090 gosub1010:ifb<48 or b>57 then return
  12. 1100 n=n*10+(b-48):goto1090
  13. 1110 nh=int(nn/256):nl=nn-(nh*256):return
  14. 1120 gosub1110:print mid$(hx$,(nhand240)/16+1,1);mid$(hx$,(nhand15)+1,1);
  15. 1130 printmid$(hx$,(nland240)/16+1,1);mid$(hx$,(nland15)+1,1);:return
  16. 1140 bx=bx+1:ifp<>3 then ml=ml+1:return
  17. 1150 poke ml,z:ml=ml+1:return
  18. 1160 ifp<>1thensp=sp+1:sl=sl+1:return
  19. 1170 pokesp,z:sp=sp+1:sl=sl+1:return
  20. 1180 ifp<>3thenreturn
  21. 1190 dx=dx+1:poke dw,nl:poke dw+1,nh:dw=dw+2:return
  22. 1200 gosub1010:ifb>64then1220
  23. 1210 g=1:ad=ad-1:gosub1080:ad=ad-1:nn=n:goto1240
  24. 1220 gosub1250
  25. 1230 g=0:b=b-65:nn=(b*2)+679
  26. 1240 b=peek(ad):gosub1110:return
  27. 1250 if(b<65 or b>90)then5360
  28. 1260 return
  29. 1270 z=173:gosub1140:z=nl:gosub1140:z=nh:goto1140
  30. 1280 z=173:gosub1140:z=nl+1:gosub1140:z=nh:goto1140
  31. 1290 z=141:gosub1140:z=nl:gosub1140:z=nh:goto1140
  32. 1300 z=141:gosub1140:z=nl+1:gosub1140:z=nh:goto1140
  33. 1310 z=169:gosub1140:z=nl:goto1140
  34. 1320 z=169:gosub1140:z=nh:goto1140
  35. 1330 z=173
  36. 1332 gosub1140:z=vl:gosub1140:z=vh:goto1140
  37. 1340 z=173
  38. 1342 gosub1140:z=vl+1:gosub1140:z=vh:goto1140
  39. 1350 z=141:gosub1140:z=vl:gosub1140:z=vh:goto1140
  40. 1360 z=141:gosub1140:z=vl+1:gosub1140:z=vh:goto1140
  41. 1370 nl=ms(h,0):nh=ms(h,1):return
  42. 1380 gosub1140:z=nl:gosub1140:z=nh:goto1140
  43. 1390 gosub1140:z=nl+1:gosub1140:z=nh:goto1140
  44. 1400 gosub1140:z=nl:goto1140
  45. 1410 gosub1140:z=nh:goto1140
  46. 1420 z=165:gosub1140:z=y:goto1140
  47. 1430 z=162:gosub1140:z=y:goto1140
  48. 1440 z=161:gosub1140:z=y:goto1140
  49. 1450 z=145:gosub1140:z=y:goto1140
  50. 1460 z=160:gosub1140:z=y:goto1140
  51. 1470 z=133:gosub1140:z=y:goto1140
  52. 1480 z=56:goto1140
  53. 1490 z=24:goto1140
  54. 1500 z=32:gosub1140:z=yl:gosub1140:z=yh:goto1140
  55. 1510 z=76:gosub1140:z=yl:gosub1140:z=yh:goto1140
  56. 1520 z=233:gosub1140:z=nl:goto1140
  57. 1530 z=233:gosub1140:z=nh:goto1140
  58. 1540 z=105:gosub1140:z=nl:goto1140
  59. 1550 z=105:gosub1140:z=nh:goto1140
  60. 1560 z=237:gosub1140:z=nl:gosub1140:z=nh:goto1140
  61. 1570 z=237:gosub1140:z=nl+1:gosub1140:z=nh:goto1140
  62. 1580 z=109:gosub1140:z=nl:gosub1140:z=nh:goto1140
  63. 1590 z=109:gosub1140:z=nl+1:gosub1140:z=nh:goto1140
  64. 1600 z=y1:gosub1140:z=y2:goto1140
  65. 1610 z=y1:gosub1140:z=y2:gosub1140:z=y3:goto1140
  66. 1620 z=169:gosub1140:z=y:goto1140
  67. 1625 poke56333,127:poke1,peek(1)and251:poke768,167:poke769,2:return
  68. 1627 poke1,peek(1)or4:poke56333,129:poke768,v1%:poke769,v2%:return
  69. 1630 lx=3:xx=0:zp=bs+80:p=1:zm=zp:sk=-1:v1%=peek(768):v2%=peek(769)
  70. 1640 dim ll%(999,1),fs(6,4),li%(lx,5),ms(5,3),oc%(3,1)
  71. 1650 gosub5500:sys759
  72. 1660 fori=0tolx:forj=0to5:readli%(i,j):next:next:bx=0:dx=0:f2=0
  73. 1670 ad=peek(43)+peek(44)*256:gosub1627:print"[147]          ***** pass";p;" *****"
  74. 1680 sp=zp:ml=zm
  75. 1690 nm=peek(ad)+peek(ad+1)*256
  76. 1700 ln=peek(ad+2)+peek(ad+3)*256:ifln>999then1740
  77. 1710 gosub1627:print"          compiling line #"mid$(str$(ln),2):gosub1625
  78. 1720 ifp=2thenll%(xx,0)=ln:ll%(xx,1)=ml-32768:xx=xx+1
  79. 1730 ad=ad+4:gosub1010:goto1790
  80. 1740 ifp=1thenp=2:zm=sp:r1=zm:la=sp:u1=bx:bx=0:goto1670
  81. 1750 ifp=2thenp=3:zm=la:r2=zm:gosub5420:db=la+bx+4:dw=db:u2=bx:bx=0:goto1670
  82. 1760 u3=bx:gosub4760:gosub1627:print"done!":gosub1625
  83. 1770 ifpeek(ml-1)<>96thenz=96:gosub1140
  84. 1780 gosub1627:goto4450
  85. 1790 ifb=136then3610:rem let
  86. 1800 ifb=153then2020:rem print
  87. 1810 ifb=128then2300:rem end
  88. 1820 ifb=137then2170:rem goto
  89. 1830 ifb=141then2230:rem gosub
  90. 1840 ifb=142then2300:rem return
  91. 1850 ifb=139then2320:rem if
  92. 1860 ifb=151then2600:rem poke
  93. 1870 ifb=129then2710:rem for
  94. 1880 ifb=130then2960:rem next
  95. 1890 ifb=135then3320:rem read
  96. 1900 ifb=140then3420:rem restore
  97. 1910 ifb=131then3470:rem data
  98. 1920 ifb=156then3510:rem clr
  99. 1930 ifb=143then2000:rem rem
  100. 1940 ifb=161then3530:rem get
  101. 1950 ifb=158then4300:rem sys
  102. 1960 rem this line assumes let
  103. 1970 ad=ad-1:goto3610
  104. 1980 sysbs:end
  105. 1990 fori=0toxx-1:printll%(i,0),ll%(i,1)+32768:next
  106. 2000 ad=nm:goto1690
  107. 2010 rem handle print
  108. 2020 gosub1010:ifb=199then3250
  109. 2030 ifb>64 then2110
  110. 2040 ifb<>34then2150
  111. 2050 sl=0:nn=sp:gosub1110
  112. 2060 b=peek(ad):ad=ad+1:if((b=0)or(b=34))then2080
  113. 2070 z=b:gosub1160:goto2060
  114. 2080 gosub1310:y=34:gosub1470:gosub1320:y=35:gosub1470
  115. 2090 y=sl:gosub1430:yl=61:yh=3:gosub1500:gosub1010:ifb<>59then2150
  116. 2095 goto2000
  117. 2100 rem handle print <var>
  118. 2110 ifb<65 or b>91 then5360
  119. 2120 b=b-65:nn=(b*2)+679:gosub1110:gosub1010:w=b
  120. 2130 gosub1280:z=174:gosub1380:yl=55:yh=3:gosub1500:ifw<>59then2150
  121. 2135 goto2000
  122. 2140 rem handle print <cr>
  123. 2150 yl=64:yh=3:gosub1500:goto2000
  124. 2160 rem handle goto <line number>
  125. 2170 gosub1080:if p<>3 then2210
  126. 2180 ifxx=0then5380
  127. 2190 f2=0:fori=0to(xx-1):ifll%(i,0)=nthenf2=1:nn=ll%(i,1)+32768
  128. 2200 next:iff2=0then5380
  129. 2210 gosub1110:yl=nl:yh=nh:gosub1510:goto2000
  130. 2220 rem handle gosub <line number>
  131. 2230 gosub1080:if p<>3 then2210
  132. 2240 ifxx=0then5380
  133. 2250 f2=0:fori=0to(xx-1):ifll%(i,0)=nthenf2=1:nn=ll%(i,1)+32768
  134. 2260 next:iff2=0then5380
  135. 2270 gosub1110:z=32:gosub1140:z=nl:gosub1140:z=nh:gosub1140:goto2000
  136. 2280 gosub1110:yl=nl:yh=nh:gosub1500:goto2000
  137. 2290 rem handle return
  138. 2300 z=96:gosub1140:goto2000
  139. 2310 rem handle if
  140. 2320 gosub1010:ifb<65 or b>90 then5360
  141. 2330 b=b-65:nn=(b*2)+679:gosub1110:vh=nh:vl=nl
  142. 2340 gosub1010
  143. 2350 ifb=177thenf1=1:goto2390:rem >
  144. 2360 ifb=178thenf1=2:goto2390:rem =
  145. 2370 ifb=179thenf1=3:goto2390:rem <
  146. 2380 goto5360:rem syntax error
  147. 2390 f3=0:gosub1010:ifb<65then2420
  148. 2400 gosub1250:f3=1:b=b-65:nn=(b*2)+679:gosub1110:goto2430
  149. 2410 rem if <var> <=> <num or var>
  150. 2420 ad=ad-1:gosub1080:ad=ad-1:nn=n:gosub1110
  151. 2430 gosub1480:gosub1330:iff3thengosub1560:goto2450
  152. 2440 gosub1520
  153. 2450 y=2:gosub1470:gosub1340:iff3thengosub1570:goto2470
  154. 2460 gosub1530
  155. 2470 y1=5:y2=2:gosub1600
  156. 2480 iff1<>3then2500
  157. 2490 y1=240:y2=5:gosub1600:y1=176:y2=3:gosub1600:goto2530
  158. 2500 iff1<>2then2520
  159. 2510 y1=208:y2=3:gosub1600:goto2530
  160. 2520 y1=144:y2=5:gosub1600:y1=240:y2=3:gosub1600:goto2530
  161. 2530 gosub1010:ifb<>167then5360
  162. 2540 gosub1080:if p<>3 then2580
  163. 2550 ifxx=0then5380
  164. 2560 f2=0:fori=0to(xx-1):ifll%(i,0)=nthenf2=1:nn=ll%(i,1)+32768
  165. 2570 next:iff2=0then5380
  166. 2580 gosub1110:yl=nl:yh=nh:gosub1510:goto2000
  167. 2590 rem handle poke
  168. 2600 gosub1200:vl=nl:vh=nh:tt=g:gosub1010:ifb<>44then5360
  169. 2610 gosub1200:iftttheny=vh:gosub1430:y=vl:gosub1460:goto2630
  170. 2620 z=174:gosub1342:z=172:gosub1332
  171. 2630 ifgthengosub1310:goto2650
  172. 2640 gosub1270
  173. 2650 yl=73:yh=3:gosub1500:goto2000
  174. 2700 rem handle for
  175. 2710 gosub1010:ifb<65 or b>90 then5360
  176. 2720 b=b-65:nn=(b*2)+679:gosub1110:vh=nh:vl=nl
  177. 2730 sk=sk+1:fs(sk,3)=nn:fs(sk,4)=0:fs(sk,1)=1
  178. 2740 gosub1010:ifb<>178then5360
  179. 2750 gosub1010:if b>64then2800
  180. 2760 rem start = constant
  181. 2770 ad=ad-1:gosub1080:nn=n:gosub1110:gosub1310:gosub1350:gosub1320:gosub1360
  182. 2780 ad=ad-1:goto2810
  183. 2790 rem start = variable
  184. 2800 b=b-65:nn=(b*2)+679:gosub1110:gosub1270:gosub1350:gosub1280:gosub1360
  185. 2810 gosub1010:ifb<>164then5360
  186. 2820 gosub1010:if b>64then2860
  187. 2830 rem to = constant
  188. 2840 ad=ad-1:gosub1080:ad=ad-1:fs(sk,0)=n:goto2870
  189. 2850 rem to = variable
  190. 2860 b=b-65:nn=(b*2)+679:fs(sk,0)=nn:fs(sk,4)=fs(sk,4) or 2
  191. 2870 fs(sk,2)=ml:gosub1010:ifb=0then2000
  192. 2880 rem handle step
  193. 2890 ifb<>169then5360
  194. 2900 gosub1010:if b>64then2940
  195. 2910 rem step = constant
  196. 2920 ad=ad-1:gosub1080:ad=ad-1:fs(sk,1)=n:goto2000
  197. 2930 rem step = variable
  198. 2940 b=b-65:nn=(b*2)+679:fs(sk,1)=nn:fs(sk,4)=fs(sk,4) or 4 : goto2000
  199. 2950 rem handle next
  200. 2960 ifsk=-1then5390
  201. 2970 nn=fs(sk,3):gosub1110:vl=nl:vh=nh
  202. 2980 nn=fs(sk,1):gosub1110
  203. 2990 gosub1490:gosub1330
  204. 3000 if(fs(sk,4)and4)=4 then3020
  205. 3010 gosub1540:goto3030
  206. 3020 gosub1580
  207. 3030 gosub1350
  208. 3040 gosub1340
  209. 3050 if(fs(sk,4)and4)=4 then3070
  210. 3060 gosub1550:goto3080
  211. 3070 gosub1590
  212. 3080 gosub1360
  213. 3090 nn=fs(sk,2):gosub1110:al=nl:ah=nh
  214. 3100 nn=fs(sk,0):gosub1110
  215. 3110 gosub1480:gosub1330
  216. 3120 if(fs(sk,4)and2)=2 then3140
  217. 3130 gosub1520:goto3150
  218. 3140 gosub1560
  219. 3150 y=2:gosub1470
  220. 3160 gosub1340
  221. 3170 if(fs(sk,4)and2)=2 then3190
  222. 3180 gosub1530:goto3200
  223. 3190 gosub1570
  224. 3200 y1=5:y2=2:gosub1600
  225. 3210 y1=240:y2=2:gosub1600:y1=176:y2=3:gosub1600
  226. 3220 yl=al:yh=ah:gosub1510
  227. 3230 sk=sk-1:goto2000
  228. 3240 rem handle print chr$()
  229. 3250 gosub1010:ifb<>40then5360
  230. 3260 gosub1010:ifb>64then3280
  231. 3270 ad=ad-1:gosub1080:y=(n and 255):gosub1620:goto3300
  232. 3